package com.konsung.ksdc.common.utils;

import com.konsung.ksdc.R;
import com.konsung.ksdc.config.MyApplication;
import com.konsung.ksdc.config.NetConfig;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.UUID;

/**
 * Created by Administrator on 2016/3/11 0011.
 */

public class StringUtils {

    /**
     * @param phoneNumber 正则验证
     * @return true 格式正确  or  false 格式错误
     */
    public static boolean isPhoneNumberValid(String phoneNumber) {
        String telRegex = "13\\d{9}|14[57]\\d{8}|15[012356789]\\d{8}|18[01256789]\\d{8}|17[0678" +
                "]\\d{8}";
//        Pattern p = Pattern.compile("^(13[0-9]|14[57]|15[0-35-9]|17[6-8]|18[0-9])[0-9]{8}$");
//        Matcher m = p.matcher(phoneNumber);
        return phoneNumber.matches(telRegex);
    }

    /**
     * 随机验证码
     * @return 验证码
     */
    public static String getRandomCode() {
        StringBuilder builder = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < 4; i++) {
            int x = random.nextInt(10);
            builder.append(x);
        }

        return builder.toString();
    }

    /**
     * 获取到当前时间该格式的字符串
     * @return 日期
     */
    public static String getDateStr() {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
        Date curDate = new Date(System.currentTimeMillis()); //获取当前时间
        String dateStr = formatter.format(curDate);
        return dateStr;
    }

    /**
     * 将给定的值转化为带两位小数的double类型
     * @param p 双精度
     * @return string
     */
    public static String trans2double(double p) {
        DecimalFormat decimalFormat = new DecimalFormat(".00");
        //构造方法的字符格式这里如果小数不足2位,会以0补足.
        String format = decimalFormat.format(p);
        if (format.equals(MyApplication.getContext()
                .getString(R.string.num_zero_point))) {
            format = MyApplication.getContext().
                    getString(R.string.zero_point_2);
        }
        return format;
    }

    /**
     * 返回当前付款的界面显示 字符串  199.5f --> ￥ 199.50
     * @param p 双精度
     * @return 款数
     */
    public static String appendPay(double p) {
        if (p <= 0) {
            return MyApplication.getContext().getString(R.string
                    .append_money_char) + "0.00";
        }
        String format = StringUtils.trans2double(p);
        return MyApplication.getContext().getString(R.string
                .append_money_char) + format; //format 返回的是字符串;
    }

    /**
     * 返回当前付款的界面显示 字符串  199.5 --> ￥ 199.50
     * @param p 字符串
     * @return 款数
     */
    public static String appendPay(String p) {

        return "￥" + p;
    }

    /**
     * 判断字符串是否为空
     * @param str string
     * @return boolen值
     */
    public static boolean isEmpty(String str) {
        if (str == null || "".equals(str)) {
            return true;
        }

        return false;
    }

    /**
     * 判断字符串是否不为空
     * @param str string
     * @return boolen值
     */
    public static boolean isNotEmpty(String str) {
        return !isEmpty(str);
    }

    /**
     * 拼接商品数量
     * @param count 整形
     * @return 数量
     */
    public static String appendCount(int count) {
        if (count <= 0) {
            count = 0;
        }
        return MyApplication.getContext().getString(R.string.append_gong) +
                count + MyApplication.getContext().getString(R.string
                .append_gong_right);
    }

    /**
     * 拼接图片url字符串
     * @param picPath 路径
     * @return 路径
     */
    public static String appendPicPath(String picPath) {
        return NetConfig.picUrl + picPath + "&rRange=0-";
    }

    /**
     * 生成32位UUID
     * @return string
     */
    public static String getUuid() {
        UUID uuid = UUID.randomUUID();
        return uuid.toString().replace("-", "");
    }

    /**
     * 转换字符长度
     * @param msgContent 内容
     * @param length 长度
     * @return 内容
     */
    public static String parseContent(String msgContent, int length) {
        if (isEmpty(msgContent)) {
            return "";
        }

        if (msgContent.length() > length) {
            return msgContent.substring(0, length) + "...";
        }

        return msgContent;
    }

    /**
     * 判断字符串是否由纯数字组合而成
     * @param text 需要判断的字符串
     * @return boolean
     */
    public static boolean isAllNumber(String text) {
        char[] chars = text.toCharArray();
        for (char c : chars) {
            if (c < '0' || c > '9') {
                return false;
            }
        }
        return true;
    }

    /**
     * 拼接选中用户
     * @param selectList 选中用户item数目
     * @return 拼接后的字符串
     */
    public static String appendSelected(int selectList) {
        return MyApplication.getContext().getString(R.string.chat_select_member) + "(" +
                selectList + ")";
    }

    /**
     * 当群名大于16,省略中间的文字
     * @param groupName 群名称
     * @return 省略后的字符串
     */
    public static String stringOmit(String groupName) {
        if (groupName.length() >= 16) {

            String oldSub = groupName.substring(5, 12);
            groupName = groupName.replace(oldSub, "....");
        }
        return groupName;
    }

    /**
     * 当群名大于13,省略中间的文字
     * @param groupName 群名称
     * @return 省略后的字符串
     */
    public static String stringOmitRear(String groupName) {
        if (groupName.length() >= 13) {

            String oldSub = groupName.substring(11, groupName.length());
            groupName = groupName.replace(oldSub, "....");
        }
        return groupName;
    }

    /**
     * 录音时间转换用于数据传送
     * @param time 录音市场
     * @return 5位字符串
     */
    public static String appendTime(long time) {
        String str = String.valueOf(time);
        if (str.length() < 5) {
            return "0" + str;
        } else if (str.length() == 5) {
            return str;
        } else {
            return "30000";
        }
    }
}
